#define _CRT_SECURE_NO_WARNINGS 1
#include <cmath>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include<climits>
using namespace std;
#define ll long long
#define Inf INT_MAX

//int t, n, s, a[100010],ans,co,maxn;
//ll sum;
//int main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> t;
//	while (t--) {
//		cin >> n >> s;
//		sum = co = ans = maxn = 0;
//		for (int i = 1; i <= n; i++) cin >> a[i];
//		for (int i = 1; i <= n; i++)
//		{
//			sum += a[i];
//			maxn = max(maxn, a[i]);
//			if (maxn == a[i])
//				co = i;
//			if (s >= sum - maxn)ans = co;
//		}
//		sum <= s ? cout << '0' << '\n' : cout << ans << '\n';
//	}
//	return 0;
//}

//ll n, mx[100010], mn[100010],m;
//int main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> n;
//	ll l = 0, cnt = 0;
//	bool flag = true;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> m;
//		flag = true;
//		mx[l] = 0, mn[l] = 1e9;
//		for (int j = 0; j < m; j++)
//		{
//			ll tmp;
//			cin >> tmp;
//			mx[l] = max(mx[l], tmp);
//			mn[l] = min(mn[l], tmp);
//			if (tmp > mn[l])
//				flag = false;
//		}
//		if (flag) l++;
//	}
//	sort(mx, mx + l);
//	for (int i = 0; i < l; i++) {
//		cnt += upper_bound(mx, mx + l, mn[i])-mx;
//	}
//	cout << n * n - cnt << '\n';
//	return 0;
//}

//int mx[100010], mn[100010];
//ll n, l = 0, cnt = 0;
//bool flag = false;
//int main() {
//    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//    cin >> n;
//    for (int i = 0, m, x; i < n; i++) {
//        cin >> m, mx[l] = 0, mn[l] = 1e9, flag = false;
//        for (int j = 0; j < m; j++) {
//            cin >> x, mn[l] = min(mn[l], x), mx[l] = max(mx[l], x);
//            if (x > mn[l]) flag = true;
//            if (!flag) l++;
//        }
//    }
//    sort(mx, mx + l);  
//    for (int i = 0; i < l; i++)
//        cnt += upper_bound(mx, mx + l, mn[i]) - mx; 
//    cout << n * n - cnt;  
//    return 0;
//}

//int n, mx[100010], mn[100010], ans,l;
//int main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> l;
//		mx[i] = 0, mn[0] = 1e9 + 1;
//		for (int j = 1,x; j <= l; j++)
//		{
//			cin >> x;
//			mx[i] = max(x, mx[i]);
//			mn[i] = min(x, mn[i]);
//		}
//	}
//	return 0;
//}

//int mx[100010], mn[100010];
//int main() {
//    bool flg;
//    ll n, l = 0, cnt = 0; cin >> n;
//    for (int i = 0, m, x; i < n; i++) {
//        cin >> m, mx[l] = 0, mn[l] = Inf, flg = false;
//        for (int j = 0; j < m; j++) {
//            cin >> x, mn[l] = min(mn[l], x), mx[l] = max(mx[l], x);
//            if (x > mn[l]) flg = true;
//        }
//        if (!flg) l++;
//    }
//    sort(mx, mx + l);
//    for (int i = 0; i < l; i++)
//        cnt += upper_bound(mx, mx + l, mn[i]) - mx; 
//    cout << n * n - cnt; 
//    return 0;
//}